package com.supermarket.kafka.generator;

import java.util.Random;

//作用：生成符合业务逻辑的随机商品记录
//关键算法：
//库存波动算法：基础库存 ± 20%，模拟库存自然波动
//喜爱程度算法：基于商品受欢迎系数的概率分布
//已售数量限制：确保不超过当前库存

public class DataGenerator {
    private static final Random RAND = new Random();

    public static ProductRecord generateRealisticRecord() {
        // 1. 随机选择商品
        Product product = ProductCatalog.getRandomProduct();

        // 2. 生成用户ID
        ProductRecord record = new ProductRecord();

        // 用户ID：0 ~ 10000     123
        record.setId(RAND.nextInt(10001));

        // 商品ID & 名字
        record.setProductId(product.getProductId());
        record.setProductName(product.getProductName());

        // 计算库存：基础库存 ± 20%
        int baseStock = product.getBaseStock();
        int fluctuation = (int)(baseStock * 0.2);
        int inStock = baseStock - fluctuation + RAND.nextInt(2 * fluctuation + 1);
        record.setInStock(inStock);

        // 计算受喜爱程度（根据商品受欢迎度模拟）
        int favorLevel = RAND.nextDouble() < product.getPopularityFactor() / 2 ? 100 :
                RAND.nextDouble() < product.getPopularityFactor() ? 50 : 0;
        record.setFavorLevel(favorLevel);

        // 计算已售卖数量：0 ~ inStock
        record.setSold(RAND.nextInt(inStock + 1));

        // 设置上架状态：U / D
        record.setStatus(RAND.nextBoolean() ? 'U' : 'D');

        return record;
    }
}